home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / Assembly / CalcCRC.a next >
Encoding:
Text File  |  1995-08-15  |  1.3 KB  |  86 lines  |  [TEXT/MPS ]

  1. CalcMBCRCStack    record    0
  2. Return    ds.l    1
  3. dummy    ds.b    1
  4. v    ds.b    1
  5. crcp    ds.l    1
  6. crctabl    ds.l    1
  7.     endr
  8.  
  9. ; procedure CalcMBCRCTabl(crctabl:Handle; var crc:integer; v:integer);
  10. CalcMBCRCTabl    proc    export
  11.     with    CalcMBCRCStack
  12.     
  13.     move.l    crcp(sp),a0
  14.     move.w    #0,d0
  15.     move.b    (a0),d0                ; crc high byte
  16.     move.b    v(sp),d1
  17.     eor.b    d1,d0
  18.     add.w    d0,d0
  19.     move.l    crctabl(sp),a1
  20.     move.l    (a1),a1
  21.     move.w    (a1,d0.w),d0
  22.     move.b    1(a0),d1            ; crc low byte
  23.     lsl.w    #8,d1
  24.     eor.w    d1,d0
  25.     move.w    d0,(a0)    
  26.  
  27.     move.l    (sp),10(sp)
  28.     add.l    #10,sp
  29.     rts
  30.  
  31.     endp
  32.  
  33. CalcMBCRCBlockStack    record    0
  34. a2    ds.l    1
  35. Return    ds.l    1
  36. crcp    ds.l    1
  37. len    ds.l    1
  38. p    ds.l    1
  39. crctabl    ds.l    1
  40.     endr
  41.  
  42. ; procedure CalcMBCRCBlockTabl(crctabl:Handle; p:ptr; len:longInt; var crc:integer);
  43. CalcMBCRCBlockTabl    proc    export
  44.     with    CalcMBCRCBlockStack
  45.     
  46.     move.l    a2,-(sp)
  47.     move.l    len(sp),d2
  48.     move.l    crcp(sp),a0
  49.     move.l    crctabl(sp),a1
  50.     move.l    (a1),a1
  51.     move.l    p(sp),a2
  52. lop
  53.     subq.l    #1,d2
  54.     bmi.s    fin
  55.  
  56.     clr.w    d0
  57.     move.b    (a0),d0                ; crc high byte
  58.     move.b    (a2)+,d1
  59.     eor.b    d1,d0
  60.     add.w    d0,d0
  61.     move.w    (a1,d0.w),d0
  62.     move.b    1(a0),d1            ; crc low byte
  63.     lsl.w    #8,d1
  64.     eor.w    d1,d0
  65.     move.w    d0,(a0)    
  66.     bra    lop
  67.  
  68. fin
  69.     move.l    (sp)+,a2
  70.     move.l    (sp),16(sp)
  71.     add.l    #16,sp
  72.     rts
  73.  
  74.     endp
  75.     
  76.     END
  77.  
  78. asm -wb "{active}"
  79.  
  80.  
  81.  
  82. (evaluate "{active}" =~ /(?*):(?*)®1.a/ )> dev:null
  83. (evaluate "{active}" =~ "/(?*)®2.a/" )> dev:null
  84. link -sn CalcCRC="{®1}" "{active}.o" -o "{®2}"
  85. dumpcode "{®2}"
  86.